using Godot;
using System;

public partial class Player1 : Sprite2D
{
    // [Export]
    // public Texture2D texture2D;
    public Godot.Collections.Array<Node> enemies;
    

    public double timer = 0;
    public override void _Ready()
    {
        GD.Print("我是 Player1");

        // //CanvasItem 的一些基本属性
        // this.Visible = true;
        // 设置Zindex
        // this.ZIndex = 10;

        // 是否加上 父节点 Zindex
        // this.ZAsRelative = false;

        // // 设置位置
        // this.Transform = new Transform2D(0, new Vector2(100, 100));
        // // 设置旋转角度 弧度值
        // this.Rotation = 0.5f;

        // // 设置节点旋转 度数
        // this.RotationDegrees = 30f;

        // // 设置缩放比例
        // this.Scale = new Vector2(2, 2);

        // // 设置节点倾斜度
        // this.Skew = 4;

        // // 设置节点倾斜度 弧度
        // this.GlobalSkew = 0.3f;


        // 设置 纹理
        // this.Texture = GD.Load<Texture2D>("res://icon.svg");
        // this.Texture = texture2D;
        // 设置节点中心是否在坐标系中心
        // this.Centered = false;

        // 水平翻转
        // this.FlipH = true;

        // 垂直翻转
        // this.FlipV = true;

        // 设置初始点
        // this.Offset = new Vector2(20, 20);

        // 启用显示区域
        // this.RegionEnabled = true;
        // 设置区域渲染的矩阵范围
        // 前两个参数是开始渲染的 位置 x,y 后两个参数是 显示的范围 w,h
        // this.RegionRect = new Rect2(0,0,60,60);

        // 设置精灵的水平垂直帧数
        // Hframes = 3;
        // Vframes = 3;
        // 设置当前显示的帧数
        // Frame = 0;



        enemies = GetTree().GetNodesInGroup("Enemy");
        GD.Print("loged by vscode");


    }

    public override void _Process(double delta)
    {
        // base._Process(delta);
        // 获取鼠标位置
        // var pos = GetGlobalMousePosition();
        // 让节点 的位置设置为鼠标
        // this.Position = pos;
        // 让节点看向 鼠标
        // this.LookAt(pos);


        // timer += delta;

        // if (timer > 1)
        // {

        //     timer = 0;
        //     int index = Frame + 1;

        //     if (index >8)
        //     {
        //         index = 0;

        //     }
        //     Frame = index;
        // }
        // var enemies = GetTree().GetNodesInGroup("Enemy");
        
        

        if (Input.IsActionJustPressed("右"))
        {
            foreach (var item in enemies)
            {
                if (item != null)
                {
                    // 将节点删除
                    item.QueueFree();
                }
            }
        }

        if (Input.IsActionJustReleased("x"))
        {
            // 调用某个组的某个方法
            GetTree().CallGroup("Enemy", "test");
        }

        if (Input.IsActionJustReleased("上"))
        {
            // 把自己加到某个组里面
            AddToGroup("Enemy");
            GD.Print("变成了 Enemy");
        }
    }

    /**
    操作的节点消失了，process 就不走了
    */ 
    public override void _Input(InputEvent @event)
    {
        enemies = GetTree().GetNodesInGroup("Enemy");
        GD.Print("enemy count is:" + enemies.Count);

        // Only process right mouse button clicks
        if (@event is not InputEventMouseButton mouseButton ||
            mouseButton.ButtonIndex != MouseButton.Right ||
            !mouseButton.Pressed)
            return;

        // Check if there are any enemies left
        if (enemies.Count == 0)
        {
            GD.Print("敌人已清理完！");
            return;
        }

        // Remove enemy and increment counter

        Node enemy = enemies[0];
        if (enemy != null && IsInstanceValid(enemy))
        {
            enemy.QueueFree();

        }
    }


}
